library(tidyverse)
library(knitr)
library(nlme)
library(lme4)
library(ggeffects)
library(effects)
library(knitr)
library(nlme)
library(contrast)
library(haven)
library(grid)
library(tidyr)
library(gridExtra)
library(broom.mixed)
library(broomExtra)# extract param and conf.int from nlme
library(gridExtra)# multipannel
library(patchwork)# for dual Y axis
The International Council for Harmonization (ICH) revised the E14 Q&A (R3) allowing a population PK-QT modeling to be used as primary analysis for assessing the QTc interval prolongation risk of new drug entities.
PK-QT analysis is intended to determine whether the studied drug has a threshold pharmacologic effect on cardiac repolarization, as detected by QTc prolongation.
Moxifloxacin data were extracted from the IQ-CSRC study wherein 5 QT-prolonging drugs and 1 drug for which no QT prolongation was observed in a through QT (TQT) study were evaluated to demonstrate that E-R analysis could detect QT prolongation in small studies with healthy volunteers.
The data we will use today are from subjects administered moxifloxacin 400 mg orally (therapeutic dose) on Day 1 followed by 800 mg IV (supratherapeutic dose) on Day 2.
Study subjects were wearing a Holter monitor for electrocardiogram (ECG) recording for 24 hrs. Ten ECG recordings and blood samples for PK analysis were collected at each time point. All study treatments had identical sample collection time points. Placebo PK samples were only to be analyzed if deemed necessary.
Pharmacokinetic sampling and ECG assessments for placebo and moxifloxacin were done at predose, 0.5, 1, 2, 3, 4, 6, 8, 12 and 24 hr post-dose. Pre-dose ECG assessments were done at -30, -20, -10, and right before dosing. Baseline ECG values were determined by the mean of the average of the 10 recordings collected at the scheduled times. Blood samples were taken after completion of ECG recordings.
Describe ECG collection methodology for your study here, e.g., manually overread at a core ECG lab, readers were/were not blinded to treatment, each subject’s ECGs were read by the same reader to minimize between-rater variability, etc.
Data were to be excluded if the paired ECG and PK samples were not collected within 15 min of one another and/or if ECG or PK data were missing for a particular time point (with the exception of baseline assessments and placebo treatment where PK is not collected or is zero).
The population PK-QT analysis was conducted using a population approach and linear mixed effects models. Estimation was conducted using R Studio using R version 4.0.0 (2020-04-24) (R Foundation for Statistical Computing, Vienna, Austria) (R Core Team 2014) with the nlme package (Pinheiro et al. 2017) and maximum likelihood estimation or restricted maximum likelihood estimation. Data manipulation, post-processing, and graphics were conducted using R.
Prior to starting modeling efforts, graphical and tabular summaries were created to check some basic assumptions that will drive the model development:
Drug effect on HR: The potential of the drug to significantly increase or decrease HR. There is no clear consensus on the specific threshold effect on HR that could influence QTc assessment, however, mean increases or decreases of greater than 10 bpm have been considered problematic (Garnett et al. 2012)
Demonstration of QT Correction: QTc interval is independent of HR for drug-free and/or placebo treatments. QTcF is usually sufficient correction method for drugs with insignificant effects on HR.
Assessment of Time Delay Between Drug Concentration and \(\Delta\)QTc: The default model assumption is a direct temporal relationship between drug concentration and QTc effect.
Following the basic model independent check the next steps are:
Model Development
Model adequacy
Prior to determining the most appropriate QT correction factor, the effect of studied drug treatment on heart rate (HR) was evaluated to support the assumption that the QT-HR relationship is the same regardless of the presence or absence of drug. Plots were generated of the mean change from baseline HR versus time grouped by treatment.
A linear mixed-effect model (LME) was used to evaluate the linear relationship between HR and moxifloxacin concentration.
\[\begin{equation} \label{HReq} \Delta HR_{ijk}=(\theta_j + \beta_{0k} + \eta_{0,i})+\gamma \times(HR_{ij0}-\overline{HR}_{ij0})+(\beta_1 +\eta_{1,i}) \times C_{ijk} +\epsilon_{ijk} \end{equation}\]
where \(\Delta HR_{ijk}\) is the change from baseline HR for the i\(^{th}\) subject, in the j\(^{th}\) treatment, at the k\(^{th}\) time point (nominal) relative to dosing;j=1 for active drug (moxifloxacin) and j=0 for placebo; \(C_{ijk}\) is the concentration at the k\(^{th}\) time point for the j\(^{th}\) treatment in the i\(^{th}\) subject(\(C_{ijk}\)=0 for placebo); \(\theta_j\) is the treatment-specific intercept (moxifloxacin versus placebo), \(\beta_{0k}\) is the population mean \(\Delta\)HR (change from baseline) with placebo for time k (representing categorical fixed effect of time to account for diurnal variation); \(HR_{ij0}\) is the baseline HR for the i\(^{th}\) subject in the j\(^{th}\) treatment, \(\overline{HR}_{ij0}\) is the overall population mean of all baseline HR (\(HR_{ij0}\)) values (from combined placebo and active treatment periods), and \(\gamma\) is the influence of the baseline HR (centered on population baseline). \(\beta_1\) is the slope which quantifies the relationship between \(\Delta\) HR and concentration. \(\eta_{0,i}\) and \(\eta_{1,i}\) are the subject-specific random effects (inter-individual variability) for the intercept and slope, respectively, each with a mean of zero and variance \(\omega^2\), and \(\epsilon_{ijk}\) is the residual error of the i\(^{th}\) subject on the j\(^{th}\) treatment at the k\(^{th}\) time point with a mean of zero and variance \(\sigma^2\).
The preferred QT correction (unless the studied drug has a significant effect on HR) is the Fridericia heart-rate corrected QT interval (QTcF). Unless drug-free QT data is collected in all subjects over a range of heart rates similar to the range of heart rates observed during treatment, the use of subject- and study-specific corrections is not generally recommended.
If studied drug was determined to have no effect on HR (or RR), then a fixed correction was applied to remove the underlying HR effect on the QT interval. The QTcF was the primary correction method in this analysis; if data suggested this method did not adequately correct for the relationship between HR and QT interval, a more appropriate correction could be estimated and reported.
For fixed corrections, QT interval corrected for heart rate equation is decribed below: \[\begin{equation} \label{QTcor} QTc=\frac{QT_{i,j}}{\left(\frac{RR_{i,j}}{1000} \right)^\beta} \end{equation}\]
where i represents the i\(^{th}\) individual and j represents the j\(^{th}\) measurement time for QT and RR (presented in milliseconds). The subject- and population-specific correction factor for calculation of QTcS could be estimated by fitting a LME model to only baseline (pre-dose values on Day 1) individual singlets (not the averaged triplicate) QT and RR measurements from all four study treatment periods as described in equation :
\[\begin{equation} \label{QTcorind} ln(QT_{i,j}) = (\theta_1 + \eta_{1,i}) + (\theta_2 + \eta_{2,i}) \cdot ln(RR_{i,j}) + \epsilon_{i,j} \end{equation}\]
where ln designates natural logarithmically transformed parameter, i represents the i\(^{th}\) individual and j represents the j\(^{th}\) measurement time for QT (milliseconds) and RR (seconds), \(\theta_2\) represent the study population specific estimate of the correction factor (\(\beta\)), and \(\theta_1\) is the intercept. \(\eta_{1,i}\) and \(\eta_{2,i}\) are the subject-specific random effects (inter-individual variability) for the intercept and slope, respectively, each with a mean of zero and variance \(\omega^2\), and \(\epsilon\) is the residual error with a mean of zero and variance \(\sigma^2\).
Thus, \(\theta_2\) and \(\theta_2\) + \(\eta_{2,i}\) represent the study- and subject-specific estimates of the correction factor (\(\beta\)), respectively.
The analysis dataset used in this workshop is insufficient for an appropriate estimation of individual- and/or study-specific corrections. Therefore, plots of QT, QTcF, and QTcB versus RR interval were generated using only baseline singlet data to assess the adequacy of each correction factor, to ensure that the correlation between QT and RR was adequately removed with the correction. Comparison of correction methods was made on the basis of the slope estimates from a LME model of QTc as a function of RR as follows:
\[\begin{equation} \label{QTlme} QTc_{i,j} = (\theta_{int} + \eta_{int,i}) + (\theta_{slope} + \eta_{slope,i}) \cdot RR_{i,j} + \epsilon_{i,j} \end{equation}\]
Where QTc is the dependent variable (either QTcF, QTcB), i represents the i\(^{th}\) individual and j represents the j\(^{th}\) measurement time for QTc and RR, \(\theta_{int}\) is the intercept, and \(\theta_{slope}\) quantifies the relationship between QTc and RR. \(\eta_{int,i}\) and \(\eta_{slope,i}\) are the subject-specific random effects (inter-individual variability) for the intercept and slope, respectively, each with a mean of zero and variance \(\omega^2\), and \(\epsilon\) is the residual error with a mean of zero and variance \(\sigma^2\).
The QTc associated with the regression that generated the smallest absolute value of the slope estimate was deemed the most appropriate HR adjusted QT method for use as the dependent variable in the subsequent E-R modeling; ideally the 95% CI for the slope should contain zero.
Concordance, or lack thereof, in the time course of studied drug concentrations and QTcF was evaluated by:
Once the basic assumptions described in Section were satisfied, then the relationship was evaluated with the pre-specified LME model shown below. In this model the change from baseline QTcF (\(\Delta\)QTcF) and concentration data from both placebo and moxifloxacin treatment periods (therapeutic and supratherapeutic doses) were analyzed. This base model to describe the dependent variable, \(\Delta\)QTc, includes the following fixed effect parameters: intercept, slope, the effect of treatment (categorical), time (categorical), and baseline QTc (continuous) on the intercept. Characterizing the placebo response at each nominal time point accounts for the effect of diurnal variation in QTc. Subject is included as a random effect on both the intercept and slope.
\[\begin{equation} \label{E-R} \Delta QTc_{ijk} = (\theta_j + \beta_{0k} + \eta_{0,i}) + \gamma \cdot (QTc_{ij0} - \overline{QTc}_{ij0}) + (\beta_1 + \eta_{1,i}) \cdot C_{ijk} + \epsilon_{ijk} \end{equation}\]
where \(\Delta\) \(QTc_{ijk}\) is the change from baseline QTc interval for the i\(^{th}\) subject, in the j\(^{th}\) treatment, at the k\(^{th}\) time point (nominal) relative to dosing; j=1 for active drug (moxifloxacin) and j=0 for placebo; \(\theta_j\) is the treatment-specific intercept (moxifloxacin versus placebo), \(\beta_{0k}\) is the population mean \(\Delta\)QTc (change from baseline) in the placebo group at each time k (representing categorical fixed effect of time to account for diurnal variation); \(\gamma\) is the influence of the baseline QTc (centered on population baseline); \(QTc_{ij0}\) is the baseline QTc for the i\(^{th}\) subject in the the j\(^{th}\) treatment, \(\overline{QTc}_{ij0}\) is the overall population mean of all baseline QTc (\(QTc_{ij0}\)) values (from combined placebo and active treatment periods), and \(C_{ijk}\) is the concentration in the i\(^{th}\) subject (and \(C_{i0k}\)=0 for placebo) for the j\(^{th}\) treatment at the k\(^{th}\) time point; \(\beta_1\) is the slope which quantifies the relationship between \(\Delta\)QTc and concentration. \(\eta_{0,i}\) and \(\eta_{1,i}\) are the subject-specific random effects (inter-individual variability) for the intercept and slope, respectively, each with a mean of zero and variance \(\omega^2\), and \(\epsilon_{ijk}\) is the residual error of the i\(^{th}\) subject on the j\(^{th}\) treatment at the k\(^{th}\) time point with a mean of zero and variance \(\sigma^2\).
The \(\Delta\)QTc versus concentration model was used to compute the placebo-adjusted change from baseline QTc (\(\Delta\Delta\)QTc) over the observed concentration range. The model-derived \(\Delta\Delta\)QTc is the difference between the model-derived \(\Delta\)QTc at a given concentration under moxifloxacin treatment, and the model-derived \(\Delta\)QTc under placebo treatment with drug concentration equal to zero. Using the contrast function (contrast package) (Kuhn et al. 2016) in R and the \(\Delta\)QTc model object, the mean and two-sided 90% CI for the predicted population average \(\Delta\Delta\)QTc at concentrations of interest (Cmax) can be computed as follows in Equations and .
\[\begin{equation} \label{QTeq} mean \Delta \Delta \overline{QTc}(C) = mean (\Delta \overline{QTc}_{ijk}|j= 1;C_{ijk} =C)-mean (\Delta \overline{QTc}_{ijk}|j = 0;C_{ijk} = 0) \end{equation}\]
where mean\(\Delta\Delta\overline{QTc}_{ijk}\)| j = 1;\(C_{ijk}\) = C is the predicted population average \(\Delta\)QTc under moxifloxacin treatment at plasma concentration C, and mean\(\Delta QTc_{ijk}\)| j = 0;\(C_{ijk}\) is the predicted population average \(\Delta\)QTc in the absence of drug (i.e. placebo treatment where C = 0).
\[\begin{equation} \label{CI90} 90\% CI = mean \Delta \Delta \overline{QTc}(C) \pm t(0.90, DF) \cdot SE (mean \Delta \Delta \overline{QTc}(C)) \end{equation}\]
where t is the critical value determined from the t-distribution, DF is the degrees of freedom, and SE is the standard error.
The evaluation of the model fit was based on several goodness-of-fit (GOFs) plots:
A total of 13 subjects were enrolled, 6 subjects were administered with placebo and 9 subjects were administered with 2 doses of moxifloxacin. Out of the subjects administered with placebo, 2 received moxifloxacin. Time-matched ECG collections from the placebo treatment group were used to correct for diurnal patterns in QTc data.
The time course of the mean (\(\pm\)SD) change from baseline QTcF intervals by treatment is displayed in Figure .
moxi<-read.csv(file="../../Data/moxi.csv")
size<-theme(axis.title.x=element_text(size=30),
axis.text.x=element_text(size=30),
axis.title.y=element_text(size=30),
axis.title.y.right=element_text(size=30),
axis.text.y=element_text(size=30),
legend.text=element_text(size=30),
legend.title=element_text(size=30),
plot.title=element_text(size=30),
strip.text.x=element_text(size=30),
strip.text.y=element_text(size=30))
style<- theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))
Ch.trt <- ggplot(data = moxi, aes(x = NTPD, y = DQTF, group = as.factor(DOSE), colour = as.factor(DOSE))) +
geom_errorbar( stat="summary",
fun.min=function(x) mean(x) - sd(x),
fun.max=function(x) mean(x) + sd(x), size=2)+
geom_point(stat="summary",fun=mean, size=2)+
geom_line(stat="summary",fun=mean, size=2)+
# geom="pointrange",size=2) +
# stat_summary(fun= mean,
# geom = "line",size=2)+
theme_bw() + style +
labs (x= "Time (hours)", y= "Change from baseline in QTcF (msec)") +
scale_colour_discrete(name="Treatment",
labels=c("Placebo", "Moxifloxacin 400 mg","Moxifloxacin 800 mg"))+ size
Ch.trt
dev.print(file="Figures/DQTCFbytreatment.png", device=png, width=1200,height=800)
## png
## 2
Tables and display summary statistics for \(\Delta\)QTcF intervals by timepoint for the placebo group and the 2 doses of moxifloxacin, respectively.
sum.delta<-moxi%>%
dplyr::group_by(TRTG,DOSE,DAY,NTPD)%>%
dplyr::summarize(N=n(),
mDQTcF=mean(DQTF),
medDQTcF=median(DQTF),
maxDQTcF=max(DQTF),
minDQTcF=min(DQTF),
sdDQTcF=sd(DQTF))%>%
mutate(Mean=paste(round(mDQTcF,digits=2),"(",round(sdDQTcF,digits=2),")"),
range=paste(round(medDQTcF,digits=2),"(",round(maxDQTcF,digits=2),",",round(minDQTcF,digits=2),")"))%>%
dplyr::rename(Day=DAY,"Nominal Time (hrs)"=NTPD, "Mean (SD)"=Mean, "Median (Max, Min)"=range)%>%
select(-mDQTcF,-medDQTcF,-maxDQTcF,-minDQTcF,-sdDQTcF)%>%ungroup()
sum1.delta<-sum.delta%>%filter(TRTG=="P - placebo")%>%
select(-TRTG,-DOSE)%>%
kable(booktabs=TRUE, format="latex", linesep = "")
sum1.delta %>% writeLines(con="Tables/delta_placebosum.tex")
sum2.delta<-sum.delta%>%filter(TRTG=="D - moxifloxacin")%>%mutate(TRTG="Moxifloxacin")%>%
select(-TRTG,-DOSE)%>%
kable(booktabs=TRUE, format="latex", linesep = "")
sum2.delta %>% writeLines(con="Tables/delta_moxisum.tex")
t<-sum.delta%>%filter(TRTG=="D - moxifloxacin")%>%mutate(TRTG="Moxifloxacin")%>%
select(-TRTG,-DOSE)
knitr::kable(t,format="html",align="lcccc")
| Day | Nominal Time (hrs) | N | Mean (SD) | Median (Max, Min) |
|---|---|---|---|---|
| 1 | 0.5 | 9 | 3.42 ( 4.25 ) | 3.81 ( 8.38 , -3.99 ) |
| 1 | 1.0 | 9 | 8.99 ( 5.51 ) | 10.26 ( 14.36 , -2.22 ) |
| 1 | 2.0 | 9 | 7.48 ( 4.69 ) | 6.81 ( 16.17 , 1.19 ) |
| 1 | 3.0 | 9 | 6.5 ( 3.34 ) | 7.09 ( 11.92 , 0.88 ) |
| 1 | 4.0 | 9 | 6.06 ( 5.43 ) | 4.89 ( 16.87 , 0.4 ) |
| 1 | 6.0 | 9 | 5.54 ( 7.89 ) | 3.47 ( 18.77 , -5.77 ) |
| 1 | 8.0 | 9 | 1.53 ( 8.71 ) | -0.65 ( 18.56 , -10.93 ) |
| 1 | 12.0 | 9 | 2.64 ( 9.92 ) | 4.86 ( 18.08 , -11.67 ) |
| 1 | 24.0 | 9 | 2.45 ( 4.97 ) | 1.91 ( 10.66 , -4.87 ) |
| 2 | 0.5 | 9 | 22.38 ( 5.11 ) | 23.13 ( 30.07 , 14.06 ) |
| 2 | 1.0 | 9 | 32.98 ( 5.13 ) | 32.22 ( 43.77 , 25.48 ) |
| 2 | 2.0 | 9 | 21.22 ( 5.23 ) | 19.87 ( 28.96 , 14.76 ) |
| 2 | 3.0 | 9 | 18.7 ( 4.01 ) | 19.71 ( 25.48 , 13.83 ) |
| 2 | 4.0 | 9 | 17.5 ( 5.63 ) | 14.49 ( 25.18 , 10.88 ) |
| 2 | 6.0 | 9 | 10.77 ( 11.5 ) | 9.66 ( 28.38 , -4.84 ) |
| 2 | 8.0 | 9 | 8.31 ( 7.84 ) | 7.68 ( 24.68 , -1.94 ) |
| 2 | 12.0 | 9 | 10.89 ( 9.11 ) | 13.98 ( 25.58 , -3.01 ) |
| 2 | 24.0 | 9 | 6.91 ( 5.62 ) | 6.77 ( 16.96 , -2.77 ) |
pk.dose <- ggplot(data = moxi%>%filter(DOSE>0), aes(x = NTPD, y = CONCC,
group = as.factor(DOSE), colour = as.factor(DOSE))) +
geom_errorbar( stat="summary",
fun.min=function(x) mean(x) - sd(x),
fun.max=function(x) mean(x) + sd(x), size=2)+
geom_point(stat="summary",fun=mean, size=2)+
geom_line(stat="summary",fun=mean, size=2)+
theme_bw() + style +
labs (x= "Time (hours)", y= "Moxifloxacin Concentration (ng/mL)") +
scale_colour_discrete(name="Moxifloxacin Dose",
labels=c("400 mg", "800 mg"))+size
pk.dose
dev.print(file="Figures/PKprofiles.png", device=png, width=1200,height=800)
## png
## 2
geom<-function(x,na.rm=TRUE){
exp(sum(log(x[x>0]),na.rm=na.rm)/length(x))
}
geomcv<-function(x,na.rm=TRUE){
sqrt(exp(sd(log(x[x>0]),na.rm=na.rm)^2)-1)*100
}
sum.pk<-moxi%>%filter(DOSE>0)%>%
dplyr::group_by(DOSE,SUBJID)%>%
top_n(1,CONC)%>%ungroup()%>%
dplyr::group_by(DOSE)%>%
dplyr::summarize(geomDV=geom(CONCC),
geomcvDV=geomcv(CONCC),
medDV=median(CONCC),
maxDV=max(CONCC),
minDV=min(CONCC),
medNTPD=median(NTPD),
maxNTPD=max(NTPD),
minNTPD=min(NTPD))%>%
mutate(Mean=paste(round(geomDV,digits=2),"(",round(geomcvDV,digits=2),")"),
range=paste(round(medDV,digits=2),"(",round(maxDV,digits=2),",",round(minDV,digits=2),")"),
MedianTmax=paste(round(medNTPD,digits=2),"(",round(maxNTPD,digits=2),",",round(minNTPD,digits=2),")"))%>%
dplyr::rename( "Geometric Mean (CV%)"=Mean, "Median (Max, Min)"=range, "Dose (mg)"=DOSE,
"Tmax Median (Max, Min)"=MedianTmax)%>%ungroup()
sum.pk2<-sum.pk%>% dplyr::select("Tmax Median (Max, Min)","Geometric Mean (CV%)" ,"Median (Max, Min)")
maxt<-sum.pk2[[1,2]]
tsum.pk<-sum.pk2%>% kable(booktabs=TRUE, format="latex", linesep = "")
tsum.pk %>% writeLines(con="Tables/pksum.tex")
s<-sum.pk2
knitr::kable(s,format="html",align="lcc")
| Tmax Median (Max, Min) | Geometric Mean (CV%) | Median (Max, Min) |
|---|---|---|
| 1 ( 3 , 0.5 ) | 1862.14 ( 28.36 ) | 2030 ( 3130 , 1240 ) |
| 1 ( 1 , 0.5 ) | 4576.13 ( 20.98 ) | 4240 ( 5800 , 3280 ) |
Following administration of single PO doses of moxifloxacin 400 mg and 800 mg, peak plasma moxifloxacin concentration Cmax was achieved with a median time to maximum concentration (Tmax) of 1-3 hours post dose. The observed geometric mean (geometric coefficient of variation (CV)%) of Cmax in ng/mL at the 400 mg (therapeutic) and 800 mg (supratherapeutic) doses were 1862.14 ( 28.36 ) and 4576.13 ( 20.98 ), respectively. Mean moxifloxacin concentration-time profiles are presented in Figure . Table presents summary statistics of moxifloxacin maximum concentration per dose group.
The effect of moxifloxacin on heart rate (HR) was evaluated via a linear mixed-effects modeling with \(\Delta\)HR as the dependent variable and moxifloxacin plasma concentration as independent variable.
sum.HR<-moxi%>%
mutate(DAY=ifelse(AVISIT=="PRE-DOSE",1,DAY))%>%
dplyr::group_by(TRTG,DOSE,DAY,NTPD)%>%
dplyr::summarize(N=n(),
mDHR=mean(DHR),
medDHR=median(DHR),
maxDHR=max(DHR),
minDHR=min(DHR),
sdDHR=sd(DHR))%>%
mutate(Mean=paste(round(mDHR,digits=2),"(",round(sdDHR,digits=2),")"),
range=paste(round(medDHR,digits=2),"(",round(maxDHR,digits=2),",",round(minDHR,digits=2),")"))%>%
dplyr::rename(Day=DAY,"Nominal Time (hrs)"=NTPD, "Mean (SD)"=Mean, "Median (Max, Min)"=range)%>%
select(-mDHR,-medDHR,-maxDHR,-minDHR,-sdDHR)%>%ungroup()
sum.HR.mox<-sum.HR%>%filter(TRTG=="D - moxifloxacin")%>%
kable(booktabs=TRUE, format="latex", linesep = "")
sum.HR.mox%>% writeLines(con="Tables/moxiHR.tex")
h<-sum.HR
knitr::kable(h,format="html",align="lcccccc")
| TRTG | DOSE | Day | Nominal Time (hrs) | N | Mean (SD) | Median (Max, Min) |
|---|---|---|---|---|---|---|
| D - moxifloxacin | 400 | 1 | 0.5 | 9 | 2.26 ( 6.03 ) | 4.48 ( 8.63 , -8.06 ) |
| D - moxifloxacin | 400 | 1 | 1.0 | 9 | 1.2 ( 5.2 ) | 0.85 ( 8.79 , -8.28 ) |
| D - moxifloxacin | 400 | 1 | 2.0 | 9 | -0.55 ( 3.46 ) | -1.07 ( 4.72 , -5.01 ) |
| D - moxifloxacin | 400 | 1 | 3.0 | 9 | -1.62 ( 4.14 ) | -1.47 ( 7.65 , -6.93 ) |
| D - moxifloxacin | 400 | 1 | 4.0 | 9 | -0.12 ( 5.38 ) | -0.73 ( 10.45 , -6.29 ) |
| D - moxifloxacin | 400 | 1 | 6.0 | 9 | 9.48 ( 6.23 ) | 10.41 ( 17.13 , -0.23 ) |
| D - moxifloxacin | 400 | 1 | 8.0 | 9 | 6.16 ( 5.47 ) | 4.11 ( 15.03 , -2.51 ) |
| D - moxifloxacin | 400 | 1 | 12.0 | 9 | 11.22 ( 7.31 ) | 12.69 ( 22.43 , -1.03 ) |
| D - moxifloxacin | 400 | 1 | 24.0 | 9 | 0.65 ( 5.93 ) | -1.37 ( 10.11 , -8.93 ) |
| D - moxifloxacin | 800 | 2 | 0.5 | 9 | 4.98 ( 7.8 ) | 8.71 ( 14.59 , -6.91 ) |
| D - moxifloxacin | 800 | 2 | 1.0 | 9 | 11.11 ( 8.26 ) | 12.43 ( 21.69 , -0.34 ) |
| D - moxifloxacin | 800 | 2 | 2.0 | 9 | 4.08 ( 6.75 ) | 5.01 ( 14.39 , -5.03 ) |
| D - moxifloxacin | 800 | 2 | 3.0 | 9 | 3.62 ( 6.75 ) | 5.26 ( 14.76 , -6.33 ) |
| D - moxifloxacin | 800 | 2 | 4.0 | 9 | 3.49 ( 5.56 ) | 5.11 ( 10.49 , -5.83 ) |
| D - moxifloxacin | 800 | 2 | 6.0 | 9 | 14.45 ( 4.93 ) | 15.23 ( 21.39 , 6.31 ) |
| D - moxifloxacin | 800 | 2 | 8.0 | 9 | 9.59 ( 5.49 ) | 10.45 ( 16.39 , -1.61 ) |
| D - moxifloxacin | 800 | 2 | 12.0 | 9 | 10.7 ( 6.15 ) | 11.81 ( 18.69 , 0.17 ) |
| D - moxifloxacin | 800 | 2 | 24.0 | 9 | 5.62 ( 6.24 ) | 5.41 ( 17.09 , -2.47 ) |
| P - placebo | 0 | 1 | 0.5 | 6 | -1.33 ( 3.81 ) | -1.34 ( 4.47 , -5.58 ) |
| P - placebo | 0 | 1 | 1.0 | 6 | -1.19 ( 2.24 ) | -1.3 ( 1.87 , -3.64 ) |
| P - placebo | 0 | 1 | 2.0 | 6 | -2.02 ( 2.77 ) | -1.79 ( 2.31 , -5.2 ) |
| P - placebo | 0 | 1 | 3.0 | 6 | -0.78 ( 2.53 ) | -0.55 ( 2.65 , -5.24 ) |
| P - placebo | 0 | 1 | 4.0 | 6 | -0.32 ( 1.82 ) | -0.14 ( 1.56 , -3.36 ) |
| P - placebo | 0 | 1 | 6.0 | 6 | 6.72 ( 5.55 ) | 7.98 ( 14.56 , -1.38 ) |
| P - placebo | 0 | 1 | 8.0 | 6 | 2.11 ( 4.04 ) | 0.72 ( 9.26 , -2.47 ) |
| P - placebo | 0 | 1 | 12.0 | 6 | 8.8 ( 5.07 ) | 9.46 ( 15.88 , 2.3 ) |
| P - placebo | 0 | 1 | 24.0 | 6 | -1.12 ( 4.57 ) | -3.58 ( 5.79 , -4.47 ) |
| P - placebo | 0 | 2 | 0.5 | 6 | -1.87 ( 1.41 ) | -2.32 ( -0.13 , -3.34 ) |
| P - placebo | 0 | 2 | 1.0 | 6 | -1.07 ( 2.16 ) | -1.16 ( 1.42 , -3.74 ) |
| P - placebo | 0 | 2 | 2.0 | 6 | -2.36 ( 2.22 ) | -2.19 ( 1.07 , -5.64 ) |
| P - placebo | 0 | 2 | 3.0 | 6 | -4.07 ( 3.41 ) | -4.65 ( 1.87 , -7.36 ) |
| P - placebo | 0 | 2 | 4.0 | 6 | -1.81 ( 4.09 ) | 0.01 ( 1.95 , -8.43 ) |
| P - placebo | 0 | 2 | 6.0 | 6 | 9.25 ( 5.35 ) | 9.92 ( 14.35 , 1.67 ) |
| P - placebo | 0 | 2 | 8.0 | 6 | 4.08 ( 2.66 ) | 3.68 ( 7.57 , -0.14 ) |
| P - placebo | 0 | 2 | 12.0 | 6 | 10.59 ( 6.02 ) | 9.26 ( 18.35 , 4.46 ) |
| P - placebo | 0 | 2 | 24.0 | 6 | 2.05 ( 2.94 ) | 1.36 ( 6.08 , -1.34 ) |
# Mean Baseline corrected placebo effect
datahr.plot<-moxi%>%
dplyr::select(DAY,NTPD,DHR,DOSE,CONC)%>%
dplyr::group_by(DOSE,DAY,NTPD)%>%
dplyr::summarize(MDHR=mean(DHR),MCONC=mean(CONC))%>%ungroup()%>%
mutate(HR=ifelse(DOSE>0,"Moxifloxacin","Placebo"),
MCONC=ifelse(MCONC==0,NA,MCONC))
## Plot MDHR and moxi mean conc
coeff<-100
labels<-as_labeller(c("2"="Moxifloxacin 800 mg","1"="Moxifloxacin 400 mg"))
t.delay.hr<-ggplot(datahr.plot, aes(x=NTPD,group=HR)) +
geom_line( aes(y=MDHR,color=HR), size=2) +
geom_line(aes(y=MCONC/coeff), col="blue",size=2) +
geom_hline(yintercept=10, linetype="dashed", color="salmon",size=2) +
geom_hline(yintercept=-10, linetype="dashed", color="salmon",size=2) +
scale_y_continuous(
# Features of the first axis
name = expression(Delta~HR (bpm)),
# Add a second axis and specify its features
sec.axis = sec_axis(~.*coeff, name="Moxifloxacin Concentration (ng/mL)")
) + theme_bw()+
facet_wrap(.~DAY,labeller=labels)+
xlab("Time (hours)")+
theme(
axis.title.y = element_text(color = "black", size=13),
axis.title.y.right = element_text(color = "blue", size=13)) + size
t.delay.hr
dev.print(file="Figures/DHR_pk.png", device=png, width=1200,height=800)
## png
## 2
HR.fit <- lme(DHR ~ TAFD + TRTG + CONC + DBHR -1, data = moxi,
na.action = na.exclude,
random = ~ 1 + CONC|SUBJID)
saveRDS(HR.fit,file='Model/HR.fit')
#Make predictions for entire concentration range for plotting
HR.contr.moxi <- contrast(HR.fit, a = list(TAFD = "HR 0.5", TRTG = "D - moxifloxacin",
CONC = seq(0,max(moxi$CONC, na.rm = T), by = 10), DBHR = 0),
b = list(TAFD = "HR 0.5", TRTG = "P - placebo",
CONC = 0, DBHR = 0), X = T, confint = 0.90)
HR.pred.moxi <- cbind.data.frame(MEAN = HR.contr.moxi$Contrast, L90 = HR.contr.moxi$Lower,
U90 = HR.contr.moxi$Upper, CONC = seq(0,max(moxi$CONC, na.rm = T), by = 10))
#
#Output 90% CIs and point estimates for all parameters
fit.plot.deltaHR <- ggplot(data = HR.pred.moxi, aes(CONC, MEAN)) + geom_line() +
theme_bw()+style+
geom_ribbon(aes(CONC, ymin = L90, ymax = U90), alpha = 0.3, fill = "blue") +
labs(y=expression(Delta~Delta~HR (bpm)),
x="Moxifloxacin Concentration (ng/mL)")+ size
fit.plot.deltaHR
dev.print(file="Figures/HRvsmoxi.png", device=png, width=1200,height=800)
## png
## 2
As Shown in Figure , Bazett’s method overcorrected for the trend between the QT and RR intervals (slope estimate of -0.114), and Fridericia’s also did not completely remove the relationship, with a slope estimate (95% CI) which was statistically significantly different from zero (-0.048 [-0.057 to -0.038]).
bl<-read.csv(file="../../Data/baseline.csv")
# Individual Baseline data QT~RR
QTu<- lme(QTMEAN ~ RRMEAN, data = bl, random = ~ 1 + RRMEAN | SUBJID,na.action = na.omit)
# Mod.1$coefficients$fixed[1]
#Mod.1$coefficients$fixed[2]
conf.1 <-tidy(QTu, effects = "fixed",conf.int=TRUE, conf.level=0.95)
B1<-ggplot(bl, aes(x=RRMEAN, y=QTMEAN)) +
geom_point(shape=20, size=3) +
theme_bw() +style+
geom_abline(intercept=QTu$coefficients$fixed[1],slope=QTu$coefficients$fixed[2],size=2,
linetype=2, color="red") +
geom_text(aes(850,425,label=paste0("Slope (95% CI):", round(conf.1[2,2],digits=3),"(",round(conf.1[2,7],digits=3),",",round(conf.1[2,8],digits=3),")")),size=9,color="blue")+
xlab("RR (msec)") +
ylab("QT (msec)") +size
# Individual Baseline data QTcB~RR
QT.b <- lme(QTCB ~ RRMEAN, data = bl, random = ~ 1 + RRMEAN | SUBJID,na.action = na.omit)
#Mod.2$coefficients$fixed[1]
#Mod.2$coefficients$fixed[2]
conf.2 <-tidy(QT.b, effects = "fixed",conf.int=TRUE, conf.level=0.95)
B2<-ggplot(bl, aes(x=RRMEAN, y=QTCB)) +
geom_point(shape=20, size=3) +
theme_bw() +style+
geom_abline(intercept=QT.b$coefficients$fixed[1],slope=QT.b$coefficients$fixed[2],size=2,
linetype=2, color="red") +
geom_text(aes(1150,450,label=paste0("Slope (95% CI):", round(conf.2[2,2],digits=3),"(",round(conf.2[2,7],digits=3),",",round(conf.2[2,8],digits=3),")")),size=9,color="blue")+
xlab("RR (msec)") +
ylab("QTcB (msec)")+ size
# Individual Baseline data QTcF~RR
QT.f <- lme(QTCF ~ RRMEAN, data = bl, random = ~ 1 + RRMEAN | SUBJID,na.action = na.omit)
#Mod.3$coefficients$fixed[1]
#Mod.3$coefficients$fixed[2]
conf.3 <-tidy(QT.f, effects = "fixed",conf.int=TRUE, conf.level=0.95)
B3<-ggplot(bl, aes(x=RRMEAN, y=QTCF)) +
geom_point(shape=20, size=3) +
theme_bw() +style+
geom_abline(intercept=QT.f$coefficients$fixed[1],slope=QT.f$coefficients$fixed[2],size=2,
linetype=2, color="red") +
geom_text(aes(850,450,label=paste0("Slope (95% CI):", round(conf.3[2,2],digits=3),"(",round(conf.3[2,7],digits=3),",",round(conf.3[2,8],digits=3),")")),size=9,color="blue")+
xlab("RR (msec)") +
ylab("QTcF (msec)")+size
grid.arrange(B1, B2, B3, ncol=1)
dev.print(file="Figures/QTcorrection.png", device=png, width=1200,height=1200)
## png
## 2
The presence of a delay in the time course of moxifloxacin cardiac repolarization effect relative to its PK profile was evaluated visually by plotting and comparing the mean moxifloxacin concentration and \(\Delta \Delta\)QTcF profiles over time for both moxifloxacin dose levels (see Figure ). Visual comparison of the mean moxifloxacin PK and \(\Delta \Delta\)QTcF profiles revealed there was general concordance in the time course of both PK and cardiac repolarization, and no time dependency of the \(\Delta \Delta\)QTcF on moxifloxacin plasma concentration was evident at either dose.
Figure is a scatter plot of \(\Delta\)QTcF and drug concentration data with loess smooth line and 95% confidence interval and a linear regression line indicating a direct effect between \(\Delta\)QTc and moxifloxacin concentration.
# Mean Baseline corrected placebo effect
data.plot1<-moxi%>%filter(DOSE==0)%>%
dplyr::select(DAY,NTPD,DQTF)%>%
dplyr::group_by(DAY,NTPD)%>%
dplyr::summarize(MDQTFpb=mean(DQTF))%>%ungroup()
# Mean Baseline corrected moxi effect
data.plot2<-moxi%>%filter(DOSE>0)%>%
dplyr::select(DOSE,DAY,NTPD,DQTF,CONCC)%>%
dplyr::group_by(DOSE,DAY,NTPD)%>%
dplyr::summarize(MDQTFmox=mean(DQTF),MCONC=mean(CONCC))%>%ungroup()%>%
mutate(DAY=ifelse(NTPD==24 & DOSE==400,1,DAY))
data.plot<-left_join(data.plot2,data.plot1,by=c("DAY","NTPD"))%>%
mutate(MDDQTF=MDQTFmox-MDQTFpb)
## Plot MDDQTF and moxi mean conc
coeff<-100
labels<-as_labeller(c("800"="Moxifloxacin 800 mg","400"="Moxifloxacin 400 mg"))
t.delay<-ggplot(data.plot, aes(x=NTPD)) +
geom_line( aes(y=MDDQTF),size=2,color="salmon") +
geom_line(aes(y=MCONC/coeff), color="blue",size=2) +
scale_y_continuous(
# Features of the first axis
name = expression(Delta~Delta~QTcF (msec)),
# Add a second axis and specify its features
sec.axis = sec_axis(~.*coeff, name="Moxifloxacin Concentration (ng/mL)")
) + theme_bw()+
facet_wrap(.~DOSE,labeller=labels)+
xlab("Time (hours)")+
theme(
axis.title.y = element_text(color = "salmon", size=13),
axis.title.y.right = element_text(color = "blue", size=13)
) + size
t.delay
dev.print(file="Figures/DDQTC_pk.png", device=png, width=1200,height=800)
## png
## 2
deltaQT.loess<-ggplot(moxi%>%filter(TRTG=="D - moxifloxacin"), aes(CONC, DQTF)) +
geom_point() +
theme_bw() +style+
geom_smooth(method= "loess",level=0.95,fill="blue",alpha=0.3)+
geom_smooth(method='lm',colour="black",se=FALSE)+
labs(y=expression(Delta~QTcF (msec)),
x="Moxifloxacin Concentration (ng/mL)")+ size
deltaQT.loess
dev.print(file="Figures/delta_loess.png", device=png, width=1200,height=800)
## png
## 2
#
# Order TRTG as factor so placebo comes first to align parameter estimates
# with predicted ddQTcF vs conc plot (primarily for intercept interpretation)
#
moxi$TRTG <- fct_relevel(moxi$TRTG, "P - placebo", "D - moxifloxacin")
fit.moxi <- lme(DQTF ~ TAFD + TRTG + CONC + DBQTF -1, data = moxi,
na.action = na.exclude,
random = ~ 1 + CONC|SUBJID)
saveRDS(fit.moxi,file='Model/fit.moxi')
CONCs<-sum.pk[[2,2]]
CONCt<-sum.pk[[1,2]]
#Make prediction at therapeutic and supratherapeutic concentration
supra.pred.moxi <- contrast(fit.moxi,
a = list(TAFD = "HR 0.5", TRTG = "D - moxifloxacin",
CONC = CONCs, DBQTF = 0),
b = list(TAFD = "HR 0.5", TRTG = "P - placebo",
CONC = 0, DBQTF = 0), X = T, confint = 0.90)
thera.pred.moxi <- contrast(fit.moxi,
a = list(TAFD = "HR 0.5", TRTG = "D - moxifloxacin",
CONC = CONCt, DBQTF = 0),
b = list(TAFD = "HR 0.5", TRTG = "P - placebo",
CONC = 0, DBQTF = 0), X = T, confint = 0.90)
#Make predictions for entire concentration range for plotting
contr.moxi <- contrast(fit.moxi, a = list(TAFD = "HR 0.5", TRTG = "D - moxifloxacin",
CONC = seq(0,max(moxi$CONC, na.rm = T), by = 10), DBQTF = 0),
b = list(TAFD = "HR 0.5", TRTG = "P - placebo",
CONC = 0, DBQTF = 0), X = T, confint = 0.90)
pred.moxi <- cbind.data.frame(MEAN = contr.moxi$Contrast, L90 = contr.moxi$Lower,
U90 = contr.moxi$Upper, CONC = seq(0,max(moxi$CONC, na.rm = T), by = 10))
#
#Output 90% CIs and point estimates for all parameters
#Generate prediction plot
val<-data.frame(moxi=c(CONCt,CONCs), QT=c(thera.pred.moxi$Contrast[[1]],supra.pred.moxi$Contrast[[1]]))
p.pred <- ggplot(data = pred.moxi, aes(CONC, MEAN)) + geom_line() +
theme_bw()+style+
geom_ribbon(aes(CONC, ymin = L90, ymax = U90), alpha = 0.3, fill = "blue") +
labs(y=expression(Delta~Delta~QTcF (msec)),
x="Moxifloxacin Concentration (ng/mL)")+ size+
geom_point(data=val, mapping=aes(x=moxi,y=QT))+
geom_segment(aes(x = CONCt , y =0 ,
xend = CONCt, yend = thera.pred.moxi$Upper[[1]]),
arrow=arrow(),col="blue",linetype="dashed")+
geom_segment(aes(x = CONCt , y =thera.pred.moxi$Upper[[1]] ,
xend = 0, yend =thera.pred.moxi$Upper[[1]]),
arrow=arrow(),col="blue",linetype="dashed")+
geom_segment(aes(x = CONCs , y =0 ,
xend = CONCs, yend = supra.pred.moxi$Upper[[1]]),
arrow=arrow(),col="salmon",linetype="dashed")+
geom_segment(aes(x = CONCs , y =supra.pred.moxi$Upper[[1]] ,
xend =0 ,yend =supra.pred.moxi$Upper[[1]]),
arrow=arrow(),col="salmon",linetype="dashed")+
annotate(x=CONCt,y=thera.pred.moxi$Lower[[1]],label="Therapeutic",geom="label",size=9,vjust=0.5)+
annotate(x=CONCs,y=supra.pred.moxi$Lower[[1]],label="Supratherapeutic",geom="label",size=9,vjust=0.5)+size
p.pred
dev.print(file="Figures/moxifit.png", device=png, width=1200,height=800)
## png
## 2
summary(fit.moxi)
## Linear mixed-effects model fit by REML
## Data: moxi
## AIC BIC logLik
## 1751.515 1839.452 -850.7576
##
## Random effects:
## Formula: ~1 + CONC | SUBJID
## Structure: General positive-definite, Log-Cholesky parametrization
## StdDev Corr
## (Intercept) 4.2299139964 (Intr)
## CONC 0.0005043698 -0.572
## Residual 5.9335982286
##
## Fixed effects: DQTF ~ TAFD + TRTG + CONC + DBQTF - 1
## Value Std.Error DF t-value p-value
## TAFDHR 0.5 -6.675848 2.1098828 237 -3.164085 0.0018
## TAFDHR 1 -3.432657 2.1149003 237 -1.623082 0.1059
## TAFDHR 12 -3.644012 2.1481225 237 -1.696371 0.0911
## TAFDHR 2 -4.742684 2.1177709 237 -2.239470 0.0261
## TAFDHR 24 -4.129738 2.1676226 237 -1.905192 0.0580
## TAFDHR 24.5 -4.497731 2.2155479 237 -2.030076 0.0435
## TAFDHR 25 0.378611 2.3014837 237 0.164507 0.8695
## TAFDHR 26 -4.146152 2.1740493 237 -1.907110 0.0577
## TAFDHR 27 -4.719720 2.1560295 237 -2.189080 0.0296
## TAFDHR 28 -5.841397 2.1495669 237 -2.717476 0.0071
## TAFDHR 3 -4.780939 2.1206887 237 -2.254428 0.0251
## TAFDHR 30 -6.118368 2.1238282 237 -2.880821 0.0043
## TAFDHR 32 -8.970956 2.1150261 237 -4.241535 0.0000
## TAFDHR 36 -2.439523 2.1145871 237 -1.153664 0.2498
## TAFDHR 4 -5.015952 2.1232645 237 -2.362378 0.0190
## TAFDHR 48 -4.050920 2.1374791 237 -1.895186 0.0593
## TAFDHR 6 -2.212784 2.1293044 237 -1.039205 0.2998
## TAFDHR 8 -6.927162 2.1332205 237 -3.247279 0.0013
## TRTGD - moxifloxacin 4.547181 1.6835939 237 2.700878 0.0074
## CONC 0.006010 0.0005679 237 10.582411 0.0000
## DBQTF -0.055470 0.0713577 237 -0.777351 0.4377
## Correlation:
## TAFDH0 TAFDHR 1 TAFDHR12 TAFDHR 2 TAFDHR 24 TAFDHR24.
## TAFDHR 1 0.473
## TAFDHR 12 0.476 0.475
## TAFDHR 2 0.474 0.476 0.477
## TAFDHR 24 0.475 0.474 0.495 0.476
## TAFDHR 24.5 0.428 0.436 0.393 0.433 0.376
## TAFDHR 25 0.403 0.413 0.358 0.409 0.337 0.534
## TAFDHR 26 0.440 0.447 0.411 0.445 0.397 0.510
## TAFDHR 27 0.446 0.453 0.422 0.451 0.409 0.503
## TAFDHR 28 0.448 0.454 0.425 0.453 0.413 0.499
## TAFDHR 3 0.474 0.476 0.480 0.477 0.479 0.427
## TAFDHR 30 0.461 0.465 0.447 0.465 0.439 0.480
## TAFDHR 32 0.466 0.470 0.458 0.470 0.452 0.466
## TAFDHR 36 0.472 0.475 0.473 0.475 0.470 0.443
## TAFDHR 4 0.475 0.476 0.482 0.477 0.482 0.422
## TAFDHR 48 0.476 0.476 0.488 0.478 0.491 0.404
## TAFDHR 6 0.476 0.476 0.485 0.478 0.486 0.414
## TAFDHR 8 0.476 0.476 0.487 0.478 0.489 0.409
## TRTGD - moxifloxacin -0.364 -0.360 -0.429 -0.366 -0.451 -0.145
## CONC 0.007 -0.009 0.111 -0.001 0.153 -0.342
## DBQTF -0.093 -0.096 -0.088 -0.090 -0.087 -0.100
## TAFDHR25 TAFDHR26 TAFDHR27 TAFDHR28 TAFDHR 3 TAFDHR30
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26 0.516
## TAFDHR 27 0.505 0.499
## TAFDHR 28 0.501 0.496 0.493
## TAFDHR 3 0.401 0.440 0.447 0.449
## TAFDHR 30 0.472 0.482 0.482 0.482 0.462
## TAFDHR 32 0.453 0.471 0.473 0.474 0.468 0.476
## TAFDHR 36 0.422 0.453 0.458 0.459 0.475 0.469
## TAFDHR 4 0.395 0.436 0.443 0.446 0.479 0.460
## TAFDHR 48 0.372 0.421 0.430 0.433 0.480 0.452
## TAFDHR 6 0.384 0.429 0.437 0.440 0.479 0.457
## TAFDHR 8 0.378 0.425 0.434 0.437 0.480 0.454
## TRTGD - moxifloxacin -0.074 -0.184 -0.209 -0.217 -0.377 -0.272
## CONC -0.435 -0.286 -0.250 -0.238 0.018 -0.155
## DBQTF -0.093 -0.092 -0.091 -0.090 -0.089 -0.092
## TAFDHR32 TAFDHR36 TAFDHR 4 TAFDHR48 TAFDH6 TAFDH8 TRTG-m
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26
## TAFDHR 27
## TAFDHR 28
## TAFDHR 3
## TAFDHR 30
## TAFDHR 32
## TAFDHR 36 0.472
## TAFDHR 4 0.467 0.475
## TAFDHR 48 0.462 0.474 0.481
## TAFDHR 6 0.465 0.475 0.481 0.484
## TAFDHR 8 0.463 0.474 0.481 0.485 0.483
## TRTGD - moxifloxacin -0.303 -0.350 -0.385 -0.413 -0.398 -0.406
## CONC -0.105 -0.029 0.032 0.082 0.056 0.069 -0.587
## DBQTF -0.093 -0.091 -0.090 -0.089 -0.089 -0.089 0.191
## CONC
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26
## TAFDHR 27
## TAFDHR 28
## TAFDHR 3
## TAFDHR 30
## TAFDHR 32
## TAFDHR 36
## TAFDHR 4
## TAFDHR 48
## TAFDHR 6
## TAFDHR 8
## TRTGD - moxifloxacin
## CONC
## DBQTF 0.034
##
## Standardized Within-Group Residuals:
## Min Q1 Med Q3 Max
## -3.07444016 -0.57233933 -0.01987932 0.51006381 3.54190373
##
## Number of Observations: 270
## Number of Groups: 13
table1<-tidy(fit.moxi, effects="fixed",conf.int=TRUE,conf.level=0.90)%>%
select(term,estimate,conf.low,conf.high)
table2<-tidy(fit.moxi, effects="ran_pars",conf.int=TRUE,conf.level=0.90)%>%
select(term,estimate,conf.low,conf.high)
#
# tidy not displaying CI for residual error; use intervals() instead
#
table2[4,3] <- round(intervals(fit.moxi)$sigma[1],3)
table2[4,4] <- round(intervals(fit.moxi)$sigma[3],3)
table<-rbind(table1,table2)%>%
mutate("90% CI"=paste0("(",round(conf.low,digits=3),", ",round(conf.high,digits=3),")"),
estimate=round(estimate,digits=3))%>%
dplyr::rename(Parameter=term,Estimate=estimate)%>%select(-conf.low,-conf.high)%>%
mutate(Parameter=ifelse(Parameter=="sd_Observation","Residual Error",
ifelse(Parameter=="sd_(Intercept)","Random Effects on Intercept",
ifelse(Parameter=="sd_CONC","Random Effects on Concentration",
ifelse(Parameter=="cor_CONC.(Intercept)","Cor Intercept-concentration",Parameter)))))
table.fit<-table%>%
kable(booktabs=TRUE, format="latex", linesep = "",digits=3)
table.fit%>% writeLines(con="Tables/table.fit.tex")
tab<-table
knitr::kable(table,format="html",align="lcc")
| Parameter | Estimate | 90% CI |
|---|---|---|
| TAFDHR 0.5 | -6.676 | (-10.832, -2.519) |
| TAFDHR 1 | -3.433 | (-7.599, 0.734) |
| TAFDHR 12 | -3.644 | (-7.876, 0.588) |
| TAFDHR 2 | -4.743 | (-8.915, -0.571) |
| TAFDHR 24 | -4.130 | (-8.4, 0.141) |
| TAFDHR 24.5 | -4.498 | (-8.862, -0.133) |
| TAFDHR 25 | 0.379 | (-4.155, 4.913) |
| TAFDHR 26 | -4.146 | (-8.429, 0.137) |
| TAFDHR 27 | -4.720 | (-8.967, -0.472) |
| TAFDHR 28 | -5.841 | (-10.076, -1.607) |
| TAFDHR 3 | -4.781 | (-8.959, -0.603) |
| TAFDHR 30 | -6.118 | (-10.302, -1.934) |
| TAFDHR 32 | -8.971 | (-13.138, -4.804) |
| TAFDHR 36 | -2.440 | (-6.605, 1.726) |
| TAFDHR 4 | -5.016 | (-9.199, -0.833) |
| TAFDHR 48 | -4.051 | (-8.262, 0.16) |
| TAFDHR 6 | -2.213 | (-6.408, 1.982) |
| TAFDHR 8 | -6.927 | (-11.13, -2.725) |
| TRTGD - moxifloxacin | 4.547 | (1.23, 7.864) |
| CONC | 0.006 | (0.005, 0.007) |
| DBQTF | -0.055 | (-0.196, 0.085) |
| Random Effects on Intercept | 4.230 | (2.567, 6.97) |
| Cor Intercept-concentration | -0.572 | (-0.991, 0.884) |
| Random Effects on Concentration | 0.001 | (0, 0.003) |
| Residual Error | 5.934 | (5.422, 6.494) |
The linear mixed-effects model was fitted to the \(\Delta\)QTcF data for moxifloxacin and placebo as described in Section . The results from the model are displayed in Figure and Table . The mean slope estimated was 0.006 msec/ng/mL, the 90% confidence interval around the slope estimate excludes zero indicating positive concentration-dependent effect of moxifloxacin on \(\Delta\)QTcF intervals. At the therapeutic moxifloxacin dose of 400 mg, the estimated geometric mean moxifloxacin Cmax value was calculated to be 1862.1 ng/mL. The estimated mean change in \(\Delta\)QTcF at the geometric mean Cmax was 15.74 msec with an 90% upper bound of 18.43. At the supratherapeutic moxifloxacin dose of 800 mg, the estimated mean change in \(\Delta\)QTcF was 32.1 msec with an 90% upper bound of 36.21 at the geometric mean Cmax value of 4576.1 ng/mL.
The scatter plots of model-predicted (population and individual) versus observed \(\Delta\)QTc values with line of unity and loess line are presented in Figure and do not suggest any patterns that indicate over or under model-predicted \(\Delta\)QTc.
moxi.fit<-readRDS(file="Model/fit.moxi")
summary(moxi.fit)
## Linear mixed-effects model fit by REML
## Data: moxi
## AIC BIC logLik
## 1751.515 1839.452 -850.7576
##
## Random effects:
## Formula: ~1 + CONC | SUBJID
## Structure: General positive-definite, Log-Cholesky parametrization
## StdDev Corr
## (Intercept) 4.2299139964 (Intr)
## CONC 0.0005043698 -0.572
## Residual 5.9335982286
##
## Fixed effects: DQTF ~ TAFD + TRTG + CONC + DBQTF - 1
## Value Std.Error DF t-value p-value
## TAFDHR 0.5 -6.675848 2.1098828 237 -3.164085 0.0018
## TAFDHR 1 -3.432657 2.1149003 237 -1.623082 0.1059
## TAFDHR 12 -3.644012 2.1481225 237 -1.696371 0.0911
## TAFDHR 2 -4.742684 2.1177709 237 -2.239470 0.0261
## TAFDHR 24 -4.129738 2.1676226 237 -1.905192 0.0580
## TAFDHR 24.5 -4.497731 2.2155479 237 -2.030076 0.0435
## TAFDHR 25 0.378611 2.3014837 237 0.164507 0.8695
## TAFDHR 26 -4.146152 2.1740493 237 -1.907110 0.0577
## TAFDHR 27 -4.719720 2.1560295 237 -2.189080 0.0296
## TAFDHR 28 -5.841397 2.1495669 237 -2.717476 0.0071
## TAFDHR 3 -4.780939 2.1206887 237 -2.254428 0.0251
## TAFDHR 30 -6.118368 2.1238282 237 -2.880821 0.0043
## TAFDHR 32 -8.970956 2.1150261 237 -4.241535 0.0000
## TAFDHR 36 -2.439523 2.1145871 237 -1.153664 0.2498
## TAFDHR 4 -5.015952 2.1232645 237 -2.362378 0.0190
## TAFDHR 48 -4.050920 2.1374791 237 -1.895186 0.0593
## TAFDHR 6 -2.212784 2.1293044 237 -1.039205 0.2998
## TAFDHR 8 -6.927162 2.1332205 237 -3.247279 0.0013
## TRTGD - moxifloxacin 4.547181 1.6835939 237 2.700878 0.0074
## CONC 0.006010 0.0005679 237 10.582411 0.0000
## DBQTF -0.055470 0.0713577 237 -0.777351 0.4377
## Correlation:
## TAFDH0 TAFDHR 1 TAFDHR12 TAFDHR 2 TAFDHR 24 TAFDHR24.
## TAFDHR 1 0.473
## TAFDHR 12 0.476 0.475
## TAFDHR 2 0.474 0.476 0.477
## TAFDHR 24 0.475 0.474 0.495 0.476
## TAFDHR 24.5 0.428 0.436 0.393 0.433 0.376
## TAFDHR 25 0.403 0.413 0.358 0.409 0.337 0.534
## TAFDHR 26 0.440 0.447 0.411 0.445 0.397 0.510
## TAFDHR 27 0.446 0.453 0.422 0.451 0.409 0.503
## TAFDHR 28 0.448 0.454 0.425 0.453 0.413 0.499
## TAFDHR 3 0.474 0.476 0.480 0.477 0.479 0.427
## TAFDHR 30 0.461 0.465 0.447 0.465 0.439 0.480
## TAFDHR 32 0.466 0.470 0.458 0.470 0.452 0.466
## TAFDHR 36 0.472 0.475 0.473 0.475 0.470 0.443
## TAFDHR 4 0.475 0.476 0.482 0.477 0.482 0.422
## TAFDHR 48 0.476 0.476 0.488 0.478 0.491 0.404
## TAFDHR 6 0.476 0.476 0.485 0.478 0.486 0.414
## TAFDHR 8 0.476 0.476 0.487 0.478 0.489 0.409
## TRTGD - moxifloxacin -0.364 -0.360 -0.429 -0.366 -0.451 -0.145
## CONC 0.007 -0.009 0.111 -0.001 0.153 -0.342
## DBQTF -0.093 -0.096 -0.088 -0.090 -0.087 -0.100
## TAFDHR25 TAFDHR26 TAFDHR27 TAFDHR28 TAFDHR 3 TAFDHR30
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26 0.516
## TAFDHR 27 0.505 0.499
## TAFDHR 28 0.501 0.496 0.493
## TAFDHR 3 0.401 0.440 0.447 0.449
## TAFDHR 30 0.472 0.482 0.482 0.482 0.462
## TAFDHR 32 0.453 0.471 0.473 0.474 0.468 0.476
## TAFDHR 36 0.422 0.453 0.458 0.459 0.475 0.469
## TAFDHR 4 0.395 0.436 0.443 0.446 0.479 0.460
## TAFDHR 48 0.372 0.421 0.430 0.433 0.480 0.452
## TAFDHR 6 0.384 0.429 0.437 0.440 0.479 0.457
## TAFDHR 8 0.378 0.425 0.434 0.437 0.480 0.454
## TRTGD - moxifloxacin -0.074 -0.184 -0.209 -0.217 -0.377 -0.272
## CONC -0.435 -0.286 -0.250 -0.238 0.018 -0.155
## DBQTF -0.093 -0.092 -0.091 -0.090 -0.089 -0.092
## TAFDHR32 TAFDHR36 TAFDHR 4 TAFDHR48 TAFDH6 TAFDH8 TRTG-m
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26
## TAFDHR 27
## TAFDHR 28
## TAFDHR 3
## TAFDHR 30
## TAFDHR 32
## TAFDHR 36 0.472
## TAFDHR 4 0.467 0.475
## TAFDHR 48 0.462 0.474 0.481
## TAFDHR 6 0.465 0.475 0.481 0.484
## TAFDHR 8 0.463 0.474 0.481 0.485 0.483
## TRTGD - moxifloxacin -0.303 -0.350 -0.385 -0.413 -0.398 -0.406
## CONC -0.105 -0.029 0.032 0.082 0.056 0.069 -0.587
## DBQTF -0.093 -0.091 -0.090 -0.089 -0.089 -0.089 0.191
## CONC
## TAFDHR 1
## TAFDHR 12
## TAFDHR 2
## TAFDHR 24
## TAFDHR 24.5
## TAFDHR 25
## TAFDHR 26
## TAFDHR 27
## TAFDHR 28
## TAFDHR 3
## TAFDHR 30
## TAFDHR 32
## TAFDHR 36
## TAFDHR 4
## TAFDHR 48
## TAFDHR 6
## TAFDHR 8
## TRTGD - moxifloxacin
## CONC
## DBQTF 0.034
##
## Standardized Within-Group Residuals:
## Min Q1 Med Q3 Max
## -3.07444016 -0.57233933 -0.01987932 0.51006381 3.54190373
##
## Number of Observations: 270
## Number of Groups: 13
diagplots<-data.frame(
TRT=moxi$TRTG,
NTPD=moxi$NTPD,
CON=moxi$CONC,
DV=getResponse(moxi.fit),
PRED=fitted(moxi.fit,level=0),
IPRED=fitted(moxi.fit,level=1),
RES=residuals(moxi.fit,level=0),
IRES=residuals(moxi.fit,level=1),
WRES=residuals(moxi.fit,level=0,type="pearson"),
IWRES=residuals(moxi.fit,level=1,type="pearson"))
diagplots2<-coefficients(moxi.fit) # to get individual slope and intercept values
diagplots3<-ranef(moxi.fit) #random effects (ETAS)
names(diagplots3)<-c("Intercept","slope")
pred<-ggplot(diagplots, aes(x=PRED, y=DV, colour=as.factor(TRT))) +
geom_point() + # Use hollow circles
theme_bw() +style+
geom_abline(intercept = 0,slope = 1, colour = "red", linetype = 2,size = 1)+
stat_smooth(method = "lm", se = F, colour = "black")+
xlab("Population Predicted") +
ylab("Observations")+
scale_colour_manual(name="Treatment",
values=c("red","blue"),
labels=c("Moxifloxacin","Placebo")) + size
ipred<-ggplot(diagplots, aes(x=IPRED, y=DV, colour=as.factor(TRT))) +
geom_point() + # Use hollow circles
theme_bw() +style+
geom_abline(intercept = 0,slope = 1, colour = "red", linetype = 2,size = 1)+
stat_smooth(method = "lm", se = F, colour = "black")+
xlab("Individual Predicted") +
ylab("Observations")+
scale_colour_manual(name="Treatment",
values=c("red","blue"),
labels=c("Moxifloxacin","Placebo")) + size
grid.arrange(pred, ipred, ncol=1)
dev.print(file="Figures/DV_pred_ipred.png", device=png, width=1200,height=800)
## png
## 2
Figure presents scatter plots of population and individual standarized residuals (Pearson weighted) versus population and individual model predictions of \(\Delta\)QTcF and moxifloxacin plasma concentrations. In all cases, the residuals are randomly scattered around zero suggesting lack of model misspecification.
res1 <- ggplot(data=diagplots, aes(x=PRED, y=WRES, colour=as.factor(TRT))) +
theme_bw() + style+
xlab("Population Predicted") +
geom_point()+
geom_hline(yintercept = 0,linetype=2)+size+theme(legend.position = "none")
#scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
res2 <- ggplot(data=diagplots, aes(x=CON, y=WRES, colour=as.factor(TRT))) +
theme_bw() + style+
xlab("Moxifloxacin Concentration (ng/mL)") +
geom_point()+
geom_hline(yintercept = 0,linetype=2)+size+ theme(legend.position = "none")
#scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
res3 <- ggplot(data=diagplots, aes(x=IPRED, y=IWRES, colour=as.factor(TRT))) +
theme_bw() + style+
xlab("Individual Predicted") +
geom_point()+
geom_hline(yintercept = 0,linetype=2)+size+ theme(legend.position = "none")
# scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
res4 <- ggplot(data=diagplots, aes(x=CON, y=IWRES, colour=as.factor(TRT))) +
theme_bw() + style+
xlab("Moxifloxacin Concentration (ng/mL)") +
geom_point()+
geom_hline(yintercept = 0,linetype=2)+size+ theme(legend.position = "none")
# scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
grid.arrange(res1, res2,res3,res4, ncol=2)
dev.print(file="Figures/res.png", device=png, width=1200,height=800)
## png
## 2
Figure displays the quantile-quantile plots of residuals. The residuals fall in the line of unity with no heavy tails indicative of model misspecification. The residuals follow normal distribution with a mean of zero.
qq1 <- ggplot(diagplots, aes(sample = WRES))+
stat_qq(aes(sample=WRES, colour=as.factor(TRT)))+
theme_bw() +style+
geom_abline(intercept = 0,slope = 1, colour = "black", linetype = 2,size = 1)+
ylab("Quantiles of WRES ") +
xlab("Quantiles of Normal Distribution") +size+ theme(legend.position = "none")
#scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
qq2 <- ggplot(diagplots, aes(sample = IWRES))+
stat_qq(aes(sample=IWRES, colour=as.factor(TRT)))+
theme_bw() +style+
geom_abline(intercept = 0,slope = 1, colour = "black", linetype = 2,size = 1)+
ylab("Quantiles of IWRES ") +
xlab("Quantiles of Normal Distribution") +size+ theme(legend.position = "none")
#scale_colour_manual(name="Treatment",
# values=c("red","blue"),
# labels=c("Moxifloxacin","Placebo"))+size
grid.arrange(qq1, qq2, ncol=1)
dev.print(file="Figures/qq.png", device=png, width=1200,height=800)
## png
## 2
Figures and are boxplots of population and individual model residuals versus the nominal timepoints for the assessments and versus treatment groups, placebo and moxifloxacin. Residuals are centered around zero not showing any particular pattern.
boxp1 <- ggplot(diagplots, aes(x=as.factor(NTPD),y=WRES)) +
geom_hline(yintercept = 0, lwd = 2) +
geom_hline(yintercept = -2, linetype = "dashed", lwd = 2) +
geom_hline(yintercept = 2, linetype = "dashed", lwd = 2) +
geom_boxplot()+style+theme(axis.text.x = element_text(angle = 45)) +
labs(y = "Weighted Residuals", x = "Nominal Time (hrs)") + size
boxp2 <- ggplot(diagplots, aes(x=as.factor(NTPD),y=IWRES)) +
geom_hline(yintercept = 0, lwd = 2) +
geom_hline(yintercept = -2, linetype = "dashed", lwd = 2) +
geom_hline(yintercept = 2, linetype = "dashed", lwd = 2) +
geom_boxplot()+style+theme(axis.text.x = element_text(angle = 45)) +
labs(y = "Individual Weighted Residuals", x = "Nominal Time (hrs)") + size
grid.arrange(boxp1, boxp2, ncol=1)
dev.print(file="Figures/boxplots1.png", device=png, width=1200,height=800)
## png
## 2
diagplots%<>%mutate(TRT=ifelse(TRT=="D - moxifloxacin", "Moxifloxacin", "Placebo"))
boxp3 <- ggplot(diagplots, aes(x=TRT,y=WRES,fill=TRT)) +
geom_hline(yintercept = 0, lwd = 2) +
geom_hline(yintercept = -2, linetype = "dashed", lwd = 2) +
geom_hline(yintercept = 2, linetype = "dashed", lwd = 2) +
geom_boxplot()+style+
labs(y = "Weighted Residuals", x = "Nominal Time (hrs)") + size+ theme(legend.position = "none")
boxp4 <- ggplot(diagplots, aes(x=TRT,y=IWRES,fill=TRT)) +
geom_hline(yintercept = 0, lwd = 2) +
geom_hline(yintercept = -2, linetype = "dashed", lwd = 2) +
geom_hline(yintercept = 2, linetype = "dashed", lwd = 2) +
geom_boxplot()+style+
labs(y = "Individual Weighted Residuals", x = "Nominal Time (hrs)") + size+ theme(legend.position = "none")
grid.arrange(boxp3, boxp4, ncol=1)
dev.print(file="Figures/boxplots2.png", device=png, width=1200,height=800)
## png
## 2
Figure corresponds to the evaluation of the final model. Mean baseline-corrected QTcF (\(\Delta\)QTcF) versus moxifloxacin concentration quantiles derived from the observed data with model-predicted variables and the associated 90% CI overlayed.
fit.moxi <- lme(DQTF ~ TAFD + TRTG + CONC + DBQTF -1, data = moxi,
na.action = na.exclude,
random = ~ 1 + CONC|SUBJID)
CIs<-ggeffect(fit.moxi, terms=c("CONC","TRTG","TAFD"),ci.lvl = 0.90,type="fe", interval = "confidence", full.data=TRUE)
summary(CIs)
## x predicted std.error conf.low
## Min. : 0 Min. :-8.971 Min. :1.896 Min. :-12.463
## 1st Qu.:1500 1st Qu.: 6.016 1st Qu.:2.102 1st Qu.: 2.485
## Median :3000 Median :15.734 Median :2.315 Median : 11.843
## Mean :3000 Mean :15.750 Mean :2.523 Mean : 11.585
## 3rd Qu.:4500 3rd Qu.:25.494 3rd Qu.:2.855 3rd Qu.: 20.717
## Max. :6000 Max. :40.987 Max. :4.309 Max. : 37.079
##
## conf.high group facet
## Min. :-5.479 P - placebo :234 HR 0.5 : 26
## 1st Qu.: 9.644 D - moxifloxacin:234 HR 1 : 26
## Median :19.407 HR 12 : 26
## Mean :19.915 HR 2 : 26
## 3rd Qu.:30.346 HR 24 : 26
## Max. :44.895 HR 24.5: 26
## (Other):312
obs<-moxi%>%filter(DOSE>0)%>%
mutate(QCON=ntile(CONC,10))%>%
group_by(QCON)%>%
dplyr::summarize(MCON=median(CONC))%>%ungroup()
dqtf<-moxi%>%filter(DOSE>0)%>%
mutate(QCON=ntile(CONC,10))
moxi.only<-left_join(obs,dqtf,by=c("QCON"))
fit.plot.deltaQTF<-ggplot(CIs%>%filter(group=="D - moxifloxacin", facet=="HR 2"), aes(x, predicted)) +
geom_line() +
theme_bw() +style+
geom_ribbon(aes(ymin = conf.low, ymax = conf.high),fill="blue", alpha = 0.3)+
geom_errorbar(data=moxi.only,mapping=aes(MCON, y=DQTF),
stat="summary",
fun.min=function(x) quantile(x,0.1),
fun.max=function(x) quantile(x,0.9))+
geom_point(data=moxi.only,mapping=aes(MCON, y=DQTF),
stat="summary", fun=mean)+
labs(y=expression(Delta~QTcF (msec)),
x="Moxifloxacin Concentration (ng/mL)")+ size
fit.plot.deltaQTF
dev.print(file="Figures/DQTCquantile.png", device=png, width=1200,height=800)
## png
## 2
The ICH E14 Q&A (R3) document was revised in December 2015 to confirm concentration-QTc (C-QT) analyses as an acceptable primary analysis methodology for definitive QTc characterization. Subsequently, a scientific white paper on concentration-QTc modeling was published collaboratively by regulatory and industry representatives. This paper described the critical design elements for the studies suitable for such analysis, as well as modeling and reporting aspects corresponding to regulatory submissions involving such concentration-QTc analyses. The definitive C-QT analysis of data in early phase studies following ICH E14 Q&A (R3) implementation has alleviated the need for Thorough QT/QTc (TQT) studies for multiple development programs. In this example report we used moxifloxacin data from the IQ-CSRC study .
The results of the analysis for the moxifloxacin IQ-CSRC study indicated the presence of the expected effect of moxifloxacin on the QTcF interval at the therapeutic and supratherapeutic doses, as the upper bound of the 2-sided 90% CIs was above the pre-specified criterion of 10 msec.
This analysis represents the quantitative evaluation of the relationship between changes in the placebo-adjusted change from baseline QTc interval and plasma concentrations of moxifloxacin.
Moxifloxacin does not have a meaningful effect on heart rate (change in the RR interval); the fixed corrections (QTcF) utilized in this analysis was considered sufficient to correct for the underlying relationship between RR and QT intervals.
The final QTc_Concentration model for \(\Delta\)QTcF indicated a mean estimate of a 0.006 msec increase from baseline in QTcF per ng/mL of moxifloxacin. At the geometric mean therapeutic Cmax value observed in patients (400 mg dose), the mean predicted increase in placebo-adjusted change from baseline QTcF is 15.74 msec, and the upper bound of the 90% CI of \(\Delta \Delta\)QTcF is above 10 msec (18.43).
At the geometric mean supratherapeutic moxifloxacin Cmax value observed in patients (800 mg dose), the mean predicted increase in placebo-adjusted change from baseline QTcF is 32.05 msec and the upper bound of the 90% CI of \(\Delta \Delta\)QTcF is above the 10 msec threshold (36.21).
Garnett, Christine E, Hao Zhu, Marek Malik, Anthony A Fossa, Joanne Zhang, Fabio Badilini, Jianguo Li, Börje Darpö, Philip Sager, and Ignacio Rodriguez. 2012. “Methodologies to Characterize the QT/corrected QT Interval in the Presence of Drug-Induced Heart Rate Changes or Other Autonomic Effects.” Am. Heart J. 163 (6): 912–30.
Kuhn, Max, contributions from Steve Weston, Jed Wing, James Forester, and Thorn Thaler. 2016. contrast: a Collection of Contrast Methods. https://CRAN.R-project.org/package=contrast.
Pinheiro, Jose, Douglas Bates, Saikat DebRoy, Deepayan Sarkar, and R Core Team. 2017. nlme: Linear and Nonlinear Mixed Effects Models. http://CRAN.R-project.org/package=nlme.
R Core Team. 2014. “R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing; 2014.”